/**
 * 拓展参数
 */
interface MapString {
  [key: string]: string;
}

/**
 * 拓展参数
 */
interface MapAny {
  [key: string]: any;
}

export interface FileInfo {
  // 文件id
  id: string;
  // 文件访问地址
  url: string;
  // 文件大小，单位字节
  size: number;
  // 文件名称
  filename: string;
  // 原始文件名
  originalFilename: string;
  // 基础存储路径
  basePath: string;
  // 存储路径
  path: string;
  // 文件扩展名
  ext: string;
  // MIME 类型
  contentType: string;
  // 存储平台
  platform: string;
  // 缩略图访问路径
  thUrl?: string;
  // 缩略图名称
  thFilename?: string;
  // 缩略图大小，单位字节
  thSize?: number;
  // 缩略图 MIME 类型
  thContentType?: string;
  // 文件所属对象id
  objectId?: string;
  // 文件所属对象类型，例如用户头像，评价图片
  objectType?: string;
  // 文件元数据
  metadata: MapString;
  // 文件用户元数据
  userMetadata: MapString;
  // 缩略图元数据
  thMetadata: MapString;
  // 缩略图用户元数据
  thUserMetadata: MapString;
  // 附加属性字典
  attr: MapAny;
  //文件的访问控制列表，一般情况下只有对象存储支持该功能，支持 String 或对应存储平台的 ACL 对象
  fileAcl?: any;
  // 缩略图的访问控制列表，一般情况下只有对象存储支持该功能
  thFileAcl?: any;
  // 哈希信息类，用来存储各种哈希值
  hashInfo: MapString;
  // 上传ID，仅在手动分片上传时使用
  uploadId?: string;
  // 上传状态，仅在手动分片上传时使用，1：初始化完成，2：上传完成
  uploadStatus?: number;
  // 创建时间
  createTime: Date;
}
